package com.itheima.service.system.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.itheima.common.utils.UtilFuns;
import com.itheima.dao.system.ModuleDao;
import com.itheima.domain.system.Module;
import com.itheima.domain.system.User;
import com.itheima.service.system.IModuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.UUID;

@Service
public class ModuleServiceImpl implements IModuleService {

    @Autowired
    private ModuleDao moduleDao;

    /**
     * 查询所有模块
     *
     * @return
     */
    @Override
    public List<Module> findAll() {
        return moduleDao.findAll();
    }

    /**
     * 查询所有模块
     *
     * @param
     * @return
     */
    @Override
    public PageInfo findAll(int page, int size) {
        //设置pageHelper参数
        PageHelper.startPage(page, size);
        //掉用持久层获取当前页数据
        List<Module> moduleList = moduleDao.findAll();

        return new PageInfo(moduleList);
    }

    /**
     * 根据id查询模块
     *
     * @param id
     * @return
     */
    @Override
    public Module findById(String id) {
        return moduleDao.findById(id);
    }

    /**
     * 保存模块
     *
     * @param module
     */
    @Override
    public void save(Module module) {

        //1.生成id
        //String id = UUID.randomUUID().toString().replace("-","").toUpperCase();
        //2.给module赋值
        module.setId(UtilFuns.generateId());

        moduleDao.save(module);


    }

    /**
     * 更新模块
     *
     * @param module
     */
    @Override
    public void update(Module module) {
        moduleDao.update(module);
    }

    /**
     * 删除模块
     *
     * @param id
     */
    @Override
    public void delete(String id) {
        moduleDao.delete(id);
    }

    /**
     * 根据用户查询对应的菜单列表
     *
     * @param user
     * @return
     */
    @Override
    public List<Module> findModuleByUser(User user) {

        if(user.getDegree()==0){
            //saas管理员
            return moduleDao.findModuleByBelong(0);
        }else if(user.getDegree()==1){
            //企业管理员
            return moduleDao.findModuleByBelong(1);
        }else {
            //普通管理员
            return moduleDao.findModuleByUserId(user.getId());
        }

    }
}
